這個它說給我們一個整數陣列,然後我要在這個裡面取一個陣列出來,這個陣列的條件是,它要是整數陣列裡總和最大的,接著要把它加總起來回傳它的和。
這題我卡了很久,我想到的是要把nums[0]往後一個一個加到nums[n],然後只要遇到比較大的就存入答案,然後再換nums[1]當第一個數在往後一個一個加,過程中有更大的就存入,接著以此類推這樣。
結果。Time Limit Exceeded
所以我又去找gpt幫忙
所以只要他加起來小於0就是我們不要的,然後用max(,)來幫我們取最大的數解決了我前面雙迴圈的問題。
class Solution {
public int maxSubArray(int[] nums) {
int maxSum = Integer.MIN_VALUE; //設最大為最小整數,這樣第一個開始才有辦法比較
int currentSum = 0;
for(int i=0;i<nums.length; i++){
currentSum += nums[i];
if(currentSum>maxSum){
maxSum = currentSum;
}
if(currentSum<0){
currentSum = 0;
}
}
return maxSum;
}
}
執行成功!